<?php
/**
 * 外观模式（又称门面模式）
 * 结构型设计模式
 * 隐藏系统的复杂性，并向客户端提供了一个客户端可以访问系统的接口
 */
spl_autoload_register('autoload');

function autoload($class) 
{
    require dirname($_SERVER['SCRIPT_FILENAME']) . '//..//' . str_replace('\\', '/', $class) . '.php';
}

/*============================= 测试 =============================*/

use facade\AnimalMaker;
$aniamlMaker = new AnimalMaker();
$aniamlMaker->produceChicken();
$aniamlMaker->producePig();

/*
小结：
外观模式把系统中的类的调用注入给主类（外观类）的一个属性，外观类统一向外提供方法，对外隐藏了内部的复杂性，很有依赖注入容器的感觉哦

优点： 
1、减少系统相互依赖
2、提高灵活性 
3、提高了安全性

缺点：
不符合开闭原则，如果要改东西很麻烦，继承重写都不合适

*/
